﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Administrador_Produtos_Cadastrar_Produto : System.Web.UI.Page{

    PetShopService.ProdutoServicos oProdutoServicos = new PetShopService.ProdutoServicos();
    PetShopService.UsuarioServicos oUsuarioServicos = new PetShopService.UsuarioServicos();

    protected void Page_Load(object sender, EventArgs e){

        if (!oUsuarioServicos.isUsuarioAdministrador())
            Response.Redirect("~/default.aspx");

        if (IsPostBack)
            return;

        DDLCategoria.DataSource = oProdutoServicos.RetornaListaCategorias();
        DDLCategoria.DataBind();

        if (DDLCategoria.Items.Count == 0) {
            lblResposta.Text = "É necessário cadastrar uma categoria e uma subcategoria";
            btnSalvar.Visible = false;
            return;
        }

        DDLSubCategoria.DataSource = oProdutoServicos.RetornaSubCateogiraPorCategoria(Convert.ToInt32(DDLCategoria.SelectedValue));
        DDLSubCategoria.DataBind();

        if (Request["id"] == null)
            return;

        PetShopService.Produto oProduto = oProdutoServicos.RetornaProduto(Convert.ToInt32(Request["id"]));
        TxtNome.Text = oProduto.Nome;
        txtPreco.Text = oProduto.Preco.ToString();
        DDLCategoria.SelectedValue = oProduto.idCategoria.ToString();

        DDLSubCategoria.DataSource = oProdutoServicos.RetornaSubCateogiraPorCategoria(oProduto.idCategoria);
        DDLSubCategoria.DataBind();

        DDLSubCategoria.SelectedValue = oProduto.idSubCategoria.ToString();
        txtImagem.Text = oProduto.Imagem;
        txtDetalhe.Text = oProduto.Detalhe;
        txtSaldoMinimo.Text = oProduto.SaldoMinimo.ToString();
        chkPromocao.Checked = (bool)oProduto.Promocao;
        txtSaldo.Text = oProduto.Saldo.ToString();
        DDLMarca.SelectedValue = oProduto.idMarca.ToString();
    }

    protected void btnSalvar_Click(object sender, EventArgs e){
        int idProduto = -1;

        if (Request["id"] != null)
            idProduto = Convert.ToInt32(Request["id"]);

        string nome = TxtNome.Text;
        string urlImagem = Server.MapPath("~/ImagensProdutos") + System.IO.Path.DirectorySeparatorChar + nome + ".jpg";
        string detalhes = txtDetalhe.Text;
        decimal preco = Convert.ToDecimal(txtPreco.Text);
        int idCategoria = StringToInt(DDLCategoria.SelectedValue);
        int idSubCategoria = StringToInt(DDLSubCategoria.SelectedValue);
        int idMarca = StringToInt(DDLMarca.SelectedValue);
        int saldo = Convert.ToInt32(txtSaldo.Text);
        int saldoMinimo = Convert.ToInt32(txtSaldoMinimo.Text);
        if (uploadFoto.HasFile)  {
            try {
                uploadFoto.PostedFile.SaveAs(urlImagem);
            } catch {
                lblResposta.Text = "Houve um erro ao carregar sua imagem";
                return;
            } 
        }
        oProdutoServicos.CadastrarProduto(idProduto, nome, preco, idCategoria, idSubCategoria, urlImagem, detalhes, chkPromocao.Checked, idMarca, saldo, saldoMinimo);
        Response.Redirect("default.aspx");
    }

    public int StringToInt(string valor){
        return Convert.ToInt32(valor);
    }

    protected void DDLCategoria_SelectedIndexChanged(object sender, EventArgs e){
        DDLSubCategoria.DataSource = oProdutoServicos.RetornaSubCateogiraPorCategoria(Convert.ToInt32(DDLCategoria.SelectedValue));
        DDLSubCategoria.DataBind();
    }
}